Developing Verified Software Using Leon

نویسنده

  • Viktor Kuncak
چکیده

We present Leon, a system for developing functional Scala programs annotated with contracts. Contracts in Leon can themselves refer to recursively defined functions. Leon aims to find counterexamples when functions do not meet the specifications, and proofs when they do. Moreover, it can optimize run-time checks by eliminating statically checked parts of contracts and doing memoization. For verification Leon uses an incremental function unfolding algorithm (which could be viewed as k-induction) and SMT solvers. For counterexample finding it uses these techniques and additionally specification-based test generation. Leon can also execute specifications (e.g. functions given only by postconditions), by invoking a constraint solver at run time. To make this process more efficient and predictable, Leon supports deductive synthesis of functions from specifications, both interactively and in an automated mode. Synthesis in Leon is currently based on a custom deductive synthesis framework incorporating, for example, syntax-driven rules, rules supporting synthesis procedures, and a form of counterexample-guided synthesis. We have also developed resource bound invariant inference for Leon and used it to check abstract worst-case execution time. We have also explored within Leon a compilation technique that transforms realvalued program specifications into finite-precision code while enforcing the desired end-to-end error bounds. Recent work enables Leon to perform program repair when the program does not meet the specification, using error localization, synthesis guided by the original expression, and counterexample-guided synthesis of expressions similar to a given one. Leon is open source and can also be tried from its web environment at leon.epfl.ch .

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Qualitative Model of Strategic Partnership in Small and Medium Enterprises

The research purpuse was to developing a qualitative model of strategic partnership for small and medium enterprises in the software industry. The research method was Descriptive-Analytic and has been done through Delphi teqnique. The Experts Panel of Delphi consists of 20 experts in the field of business management, entrepreneurship management, strategic management, and software industry that ...

متن کامل

Developing a causal model for organizational factors effecting on knowledge sharing (Case: The National Iranian South Oil Company)

  The existence of transformative leaders who are able to create an atmosphere of trust and rearrange the organizational culture in order to foster organizational citizenship behaviors which in turn can encourage the employees to willingly share knowledge within the organization is valuable in any organization. The purpose of the present study was to investigate the role of transformational le...

متن کامل

Design a Model for Developing Leadership Competency for Steel Industry Managers Using the Grounded Theory

The purpose of this research was to make and provide a model for developing the competence of the leadership of the steel industry managers. The methodology of this research was applied and exploratory in terms of the purpose and data gathering method was mixed. In qualitative stage, after a deep interview, data gathering has been done based on the Grounded Theory and by using a questionnaire o...

متن کامل

Workshop on Trustworthy Software

s Collection Workshop Trustworthy Software 2006 INTERREG IIIC/e-Bird Serge Autexier, Stephan Merz, Leon van der Torre, Reinhard Wilhelm and Pierre Wolper Abstract. On 18-19 May 2006, the Saarland University organized a two-day workshop about "Trustworthy Software" in order to present and foster the research competence in the SaarLorLuxWallonie region in the area of developing safe, secure and r...

متن کامل

Logic Programming and Software engineering - implications for Software design

Logic programming is a programming paradigm with potential to contribute to software engineering. This paper is concerned with one dimension of that potential, the impact that experience with developing logic programs can have on software design. We present a logic programming perspective on programming patterns, systematic program development, design for provability, and the paradigm of meta-p...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2015